#!/bin/bash

# 解析命令行参数
DAEMON_MODE=false
STOP_APP=false
RESTART_APP=false

# 处理命令行参数
while [[ $# -gt 0 ]]; do
    key="$1"
    case $key in
        -d|--daemon)
            DAEMON_MODE=true
            shift
            ;;
        -s|--stop)
            STOP_APP=true
            shift
            ;;
        -r|--restart)
            RESTART_APP=true
            shift
            ;;
        *)
            echo "未知参数: $1"
            echo "用法: $0 [-d|--daemon] [-s|--stop] [-r|--restart]"
            echo "  -d, --daemon   以守护进程方式运行应用"
            echo "  -s, --stop     停止正在运行的应用"
            echo "  -r, --restart  重启应用"
            exit 1
            ;;
    esac
done

# 如果是停止或重启模式，直接调用run.py的相应选项
if [ "$STOP_APP" = true ] || [ "$RESTART_APP" = true ]; then
    # 检查conda是否可用
    if ! command -v conda &> /dev/null; then
        echo "错误: 未找到conda命令，请确保已安装Anaconda或Miniconda"
        exit 1
    fi
    
    # 获取当前激活的环境名称
    CURRENT_ENV=$(conda info --envs | grep '*' | awk '{print $1}')
    
    # 如果不在web环境中，尝试激活
    if [ "$CURRENT_ENV" != "web" ]; then
        echo "正在激活web环境..."
        CONDA_BASE=$(conda info --base)
        source "$CONDA_BASE/etc/profile.d/conda.sh"
        conda activate web
        
        # 检查环境是否成功激活
        if [ $? -ne 0 ]; then
            echo "环境激活失败，尝试使用另一种方式..."
            eval "$(conda shell.bash hook)"
            conda activate web
            if [ $? -ne 0 ]; then
                echo "环境激活失败，无法执行操作"
                exit 1
            fi
        fi
    fi
    
    # 执行停止或重启命令
    if [ "$STOP_APP" = true ]; then
        echo "正在停止应用..."
        python run.py -s
    else
        echo "正在重启应用..."
        python run.py -r
    fi
    
    # 如果只是停止，退出脚本
    if [ "$STOP_APP" = true ] && [ "$RESTART_APP" = false ]; then
        exit 0
    fi
fi

echo "正在检查conda环境..."

# 检查conda是否可用
if ! command -v conda &> /dev/null; then
    echo "错误: 未找到conda命令，请确保已安装Anaconda或Miniconda"
    echo "下载地址: https://www.anaconda.com/products/distribution"
    exit 1
fi

# 获取当前激活的环境名称
CURRENT_ENV=$(conda info --envs | grep '*' | awk '{print $1}')

# 检查环境是否存在
if conda env list | grep -q "web"; then
    echo "web环境已存在"
    
    # 检查是否需要更新依赖
    echo "检查是否需要更新依赖..."
    
    # 使用pip安装/更新必要的依赖，而不是使用conda env update
    if [ "$CURRENT_ENV" = "web" ]; then
        echo "已在web环境中，直接安装/更新依赖"
        pip install -r requirements.txt
    else
        echo "正在激活web环境..."
        # 使用正确的方式激活conda环境
        CONDA_BASE=$(conda info --base)
        source "$CONDA_BASE/etc/profile.d/conda.sh"
        conda activate web
        
        # 检查环境是否成功激活
        if [ $? -ne 0 ]; then
            echo "环境激活失败，尝试使用另一种方式..."
            eval "$(conda shell.bash hook)"
            conda activate web
            if [ $? -ne 0 ]; then
                echo "环境激活失败，请手动激活环境后运行应用"
                echo "运行: conda activate web && python run.py"
                exit 1
            fi
        fi
        
        # 安装/更新依赖
        pip install -r requirements.txt
    fi
else
    echo "web环境不存在，正在创建..."
    # 创建新环境
    conda create -n web python=3.12 -y
    if [ $? -ne 0 ]; then
        echo "创建环境失败"
        exit 1
    fi
    
    echo "环境创建成功，正在激活..."
    # 激活环境
    CONDA_BASE=$(conda info --base)
    source "$CONDA_BASE/etc/profile.d/conda.sh"
    conda activate web
    
    # 检查环境是否成功激活
    if [ $? -ne 0 ]; then
        echo "环境激活失败，尝试使用另一种方式..."
        eval "$(conda shell.bash hook)"
        conda activate web
        if [ $? -ne 0 ]; then
            echo "环境激活失败，请手动激活环境后运行应用"
            echo "运行: conda activate web && python run.py"
            exit 1
        fi
    fi
    
    # 安装依赖
    echo "正在安装依赖..."
    pip install -r requirements.txt
fi

echo "正在启动应用..."
# 根据是否为守护进程模式选择启动命令
if [ "$DAEMON_MODE" = true ]; then
    echo "以守护进程方式启动..."
    python run.py -d
else
    python run.py
fi
